package leetcode.editor.cn;

//给定字符串列表，你需要从它们中找出最长的特殊序列。最长特殊序列定义如下：该序列为某字符串独有的最长子序列（即不能是其他字符串的子序列）。 
//
// 子序列可以通过删去字符串中的某些字符实现，但不能改变剩余字符的相对顺序。空序列为所有字符串的子序列，任何字符串为其自身的子序列。 
//
// 输入将是一个字符串列表，输出是最长特殊序列的长度。如果最长特殊序列不存在，返回 -1 。 
//
// 
//
// 示例： 
//
// 输入: "aba", "cdc", "eae"
//输出: 3
// 
//
// 
//
// 提示： 
//
// 
// 所有给定的字符串长度不会超过 10 。 
// 给定字符串列表的长度将在 [2, 50 ] 之间。 
// 
//
// 
// Related Topics 数组 哈希表 双指针 字符串 排序 👍 77 👎 0

import java.util.Arrays;
import java.util.Comparator;

//Java：最长特殊序列 II
public class LongestUncommonSubsequenceIi_522 {
    public static void main(String[] args) {
        Solution solution = new LongestUncommonSubsequenceIi_522().new Solution();
        // TO TEST
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int findLUSlength(String[] strs) {
            Arrays.sort(strs, (o1, o2) ->
                o2.length() - o1.length()
            );
            for (int i = 0; i < strs.length; i++) {
                for (int j = 0; j <= strs.length; j++) {
                    if (j == strs.length) return strs[i].length();
                    if (j != i && isSubsequence(strs[i], strs[j])) {
                        break;
                    }
                }
            }
            return -1;
        }
        public boolean isSubsequence(String s, String t) {
            int len1 = s.length(), right = -1;
            for (int i = 0; i < len1; i++) {
                right = t.indexOf(s.charAt(i), right + 1);
                if (right == -1) return false;
            }
            return true;
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}
